package LineCode.剑指Offer.举例让抽象具体化;

import java.util.Stack;

/**
 * 定义栈的数据结构，请在该类型中实现一个能够得到栈最小元素的min函数。
 */
public class 包含min函数的栈 {

    Stack<Integer> data = new Stack<>();
    Stack<Integer> min = new Stack<>();
    Integer temp = null;

    public static void main(String[] args) {

    }

    public void push(int node) {
        data.push(node);
        if (temp == null || temp > node) {
            temp = node;
            min.push(node);
        }
        data.push(node);
    }

    public void pop() {
        int dateTop = data.pop();
        if (dateTop == temp) {
            min.pop();
            temp = min.peek();
        }
    }

    public int top() {
        return data.peek();
    }

    public int min() {
        return temp;
    }
}
